const application = require('./framework/core/application.js');

// 云函数入口函数
exports.main = async (event, context) => {
  // 防止等待事件循环清空导致 3 秒超时（例如某些 SDK 持有 keep-alive 连接或定时器）
  if (context && typeof context.callbackWaitsForEmptyEventLoop === 'boolean') {
    context.callbackWaitsForEmptyEventLoop = false;
  }
  return await application.app(event, context);
};

// 本地命令行运行支持（兼容 JSON 或 key=value 形式）
if (require.main === module) {
  (async () => {
    try {
      let event = {};
      const args = process.argv.slice(2);
      if (args.length === 1) {
        // 尝试解析为JSON
        try {
          event = JSON.parse(args[0]);
        } catch (e) {
          console.error('JSON解析失败，尝试解析为key=value参数');
        }
      }
      if (!event || Object.keys(event).length === 0) {
        // 解析 key=value 形式
        for (const a of args) {
          const eqIdx = a.indexOf('=');
          if (eqIdx > 0) {
            const k = a.slice(0, eqIdx);
            const v = a.slice(eqIdx + 1);
            event[k] = v;
          }
        }
      }
      if (!event || Object.keys(event).length === 0) {
        console.log('未提供事件参数，使用空对象');
      }
      const context = {};
      const result = await application.app(event, context);
      // 直接打印结果，便于管道捕获
      console.log(JSON.stringify(result));
      process.exit(0);
    } catch (err) {
      console.error('本地运行错误:', err);
      process.exit(1);
    }
  })();
}